package main

import "fmt"

type Animals interface {
	run()
}

type Turtle struct {
}

type Rabbit struct {
}

/**
 *    (t Turtle)  和  (t *Turtle)
*	 区别在于  t 是值类型还是指针类型     值类型会重新生成一个对象  引用类型不会重新生成，而是找到引用对象
*/
func (t Turtle) run() {
	fmt.Println("乌龟爬行很慢")
}

func (r Rabbit) run() {
	fmt.Println("兔子跑的很快")
}

func main() {
	var animal Animals
	animal = &Turtle{}
	animal.run()

	animal = &Rabbit{}
	animal.run()
}
